#define _CRT_SECURE_NO_WARNINGS
#include <vector>
#include <unordered_map>
using namespace std;
class SnapshotArray {
public:
    vector<int> _vv;
    unordered_map<int, vector<int>> dp;
    int cnt = 0;
    SnapshotArray(int length) 
    {
        for (int i = 0; i < length; i++)
        {
            _vv.resize(length, 0);
            dp[i] = _vv;
        }
    }
    void set(int index, int val) {
        dp[cnt][index] = val;
    }
    int snap() {
        static int c = 0;
        if (c == 0)
        {
            c++;
            return 0;
        }
        if (c > 1) cnt++;
        return c - 1;
    }
    int get(int index, int snap_id) {
        return dp[snap_id][index];
    }
};

int main()
{
    SnapshotArray* obj = new SnapshotArray(3);  
    obj->set(0, 5);
    obj->snap();
    obj->set(0, 6);
    obj->get(0, 0);
    return 0;
}
